package controle;

import java.util.ArrayList;
import java.util.List;

import DAO.EventoDAO;
import DAO.DAOFactory;
import DAO.EstadioDAO;
import DAO.EventoDAO;
import DAO.VendaIngressoDAO;
import modelo.Evento;
import modelo.Estadio;
import modelo.Evento;
import modelo.VendaIngresso;
/**
 * 
 * @author douglas_joaquim
 *
 *Controle evento emplementa o Evento
 */
public class ControleEvento implements Controle<Evento> {
	

	/**
	 * estadio, data, time_1, time_2, preco_geral, preco_camarote, horas
	 */
	@Override
	public void salvar(Evento e) throws Exception {
		if (e.getEstadio()== null) {
			throw new Exception("Estadio e obrigario");
		}
		if (e.getData() == null) {
			throw new Exception("Data e obrigario");
		}
		if (e.getTime_1() == null) {
			throw new Exception("Time 1 e obrigario");
		}
		if (e.getTime_2() == null) {
			throw new Exception("Time 2 e obrigario");
		}
		if (e.getPreco_geral() == 0) {
			throw new Exception("Preeo geral e obrigario");
		}
		if (e.getPreco_camarote() == 0) {
			throw new Exception("Preeo camarote e obrigario");
		}
		if (e.getHoras() == null) {
			throw new Exception("Horario e obrigario");
		}

		EventoDAO eventoDAO = DAOFactory.getEventoDAO();
		if(e.getIdEvento()==0)
		eventoDAO.salvar(e);
		else
			eventoDAO.alterar(e);
		
	}
/**
 * vai excluir o evento
 */
	@Override
	public void excluir(Evento e) {
		
		EventoDAO eventoDAO = DAOFactory.getEventoDAO();
		eventoDAO.deletar(e);
	}
/**
 * Busca e cria uma lista de evento por id, e estadio
 */
	@Override
	public List<Evento> buscar(Evento e) throws Exception {
		List<Evento> eventos = new ArrayList<Evento>();
		
		if ((e.getIdEvento() == 0 &&(e.getEstadio().equals("")))) {
			throw new Exception("Estadio ou Id sao obrigario");
		}
		if ((e.getEstadio().equals("")&&(e.getIdEvento()!=0))) {
			EventoDAO eventoDAO = DAOFactory.getEventoDAO();
			eventos =  eventoDAO.buscaEventoPorId(e.getIdEvento());
		}if ((e.getIdEvento()==0)&&(!e.getEstadio().equals(""))) {
			EventoDAO eventoDAO = DAOFactory.getEventoDAO();
			eventos =  eventoDAO.buscaEventoPorEstadio(e);
		}if ((!e.getEstadio().equals("")&&(e.getIdEvento()!=0))) {
			EventoDAO eventoDAO = DAOFactory.getEventoDAO();
			eventos =  eventoDAO.buscaEventoPorId(e.getIdEvento());
		}
		return eventos;
	}
	/**
	 * Busca e cria uma lista de todos eventos
	 */
	@Override
	public List<Evento> buscarTodos(){
		List<Evento> eventos = new ArrayList<Evento>();
		EventoDAO eventoDAO = DAOFactory.getEventoDAO();
		eventos = eventoDAO.findAll();
		return eventos;

	}
	/**
	 * Busca e cria uma lista de eventos por data
	 * 
	 * @return eventos
	 */
	public List<Evento> buscarData(){
		List<Evento> eventos = new ArrayList<Evento>();
		EventoDAO eventoDAO = DAOFactory.getEventoDAO();
		eventos = eventoDAO.buscaEventoPorData();
		return eventos;
	}

}
